﻿#define _CRT_SECURE_NO_WARNINGS 1
//描述:
//给定一个长度为n的数组a1,a2,....an.
//接下来有q次查询, 每次查询有两个参数l, r.
//对于每个询问, 请输出al+al+1+....+ar.
//​
//输入描述：
//第一行包含两个整数n和q.
//第二行包含n个整数, 表示a1,a2,....an​.
//接下来q行, 每行包含两个整数   l和r.
//
//输出描述：
//输出q行, 每行代表一次查询的结果.
//
//示例
//输入：
//		3 2
//		1 2 4
//		1 2
//		2 3
//
//输出：
//		3
//		6
#include <iostream>
using namespace std;
const int N = 100010;
long long arr[N], dp[N];
int n, q;
int main()
{
	cin >> n >> q;
	// 读取数据
	for (int i = 1; i <= n; i++) cin >> arr[i];
	// 处理前缀和数组
	for (int i = 1; i <= n; i++) dp[i] = dp[i - 1] + arr[i];
	while (q--)
	{
		int l, r;
		cin >> l >> r;
		// 计算区间和
		cout << dp[r] - dp[l - 1] << endl;
	}
	return 0;
}